######################################################
# 函数
######################################################
f <- function(x, y = 10) x + y
f(1, 2)
f(1)
f2 <- function(x, ...) {print(x); f(...)}
f2("求和计算：", 1, 2)

addsum <- function(x, ...){
  args <- list(...)
  for(a in args)  x <- x + a
  return(x + 1)
  x
}

addsum(1, 2, 3, 4)

# 匿名函数
a <- c(1, 2, 3, 4, 5)
sapply(a, function(x) {x + 1})
sapply(a, function(x) {x^2})

# 查看函数参数
args(addsum)

# 修改函数
f <- function(x, y=1, z=2){x + y + z}
f(1)
formals(f) <- alist(x=, y=100, z=200)
body(f) <- expression({x * y * z})
f(1)
